// 类型 type
// 接口 interface 
// 函数 function
// 类 class 
// 泛型 
// 类型推论
// export let num = 1
// let arr = [1, true, null, { name: '张三' }]

// 高级类型

// 交叉类型（Intersection Types） ： 交叉类型是将多个类型合并为一个类型。
// 联合类型（Union Types） ： 联合类型表示一个值可以是几种类型之一
// interface P {
// 	name: string
// }

// interface U {
// 	age: number
// }

// export const obj: P & U = {
// 	name: '张三',
// 	age: 18
// }

// export const obj1: P | U = {
// 	name: '李四',
// 	age: 20
// }

// export interface O {
// 	name: string
// 	age?: number
// }

// const o: O = {
// 	name: '张三',
// }

// 类型保护
// if (typeof o.age === 'number')
// 	console.log(o.age + 1)

// // 

// document.addEventListener('click', (e) => {
// 	// 类型断言
// 	const target = e.target as HTMLElement;
// 	// 类型断言(类型强制转换)
// 	// const target = <HTMLElement>e.target


// 	target.classList.add('active')
// 	target.style.cssText = ``
// })

// // 类型别名
// interface Person {
// 	name: string
// 	age: number
// }

// interface Person1 extends Person {
// 	sex: string
// }

// const oo: Person1 = {
// 	sex: '男',
// 	age: 18,
// 	name: ''
// }

// console.log(oo);



// // 类型别名
// type P1 = Person

// type P2 = {
// 	name: string
// 	age: number
// }

// type P3 = boolean | number | string

// const p1: Person = { name: '1', age: 2 }
// const p2: P2 = { name: '1', age: 2 }

// let p3: P3 = 1
// p3 = true
// p3 = '1231231'

// let p4: P3 = 123


// type Alias = { num: number }
// interface Interface {
// 	num: number;
// }
// declare function aliased(arg: Alias): Alias;
// declare function interfaced(arg: Interface): Interface;

// 字符串字面量类型

// export type Esaying = 'a' | "b" | 'c' | "d"

// function add(dy: Esaying) {
// 	switch (dy) {
// 		case 'a': break;
// 	}


// 	if (dy === '123') {

// 	}
// }



export const num = 1

const arr = [1, 2, 3, 4]

export {
	arr as qwe
}

const result = 123

export default result

